﻿
namespace FXC.Web.Entity
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Objects.DataClasses;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;


    // The MetadataTypeAttribute identifies CityMetadata as the class
    // that carries additional metadata for the City class.
    [MetadataTypeAttribute(typeof(City.CityMetadata))]
    public partial class City
    {

        // This class allows you to attach custom attributes to properties
        // of the City class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class CityMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private CityMetadata()
            {
            }

            public string CityCode { get; set; }

            public string CityLocalName { get; set; }

            public string CityName { get; set; }

            public short CityType { get; set; }

            public Nullable<int> DisplayOrder { get; set; }

            public int Id { get; set; }

            public DateTime InsertDate { get; set; }

            public bool IsActive { get; set; }

            public bool IsDeprecated { get; set; }

            public State State { get; set; }

            public int State_Id { get; set; }

            public DateTime UpdateDate { get; set; }

            public EntityCollection<User> Users { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies CountryMetadata as the class
    // that carries additional metadata for the Country class.
    [MetadataTypeAttribute(typeof(Country.CountryMetadata))]
    public partial class Country
    {

        // This class allows you to attach custom attributes to properties
        // of the Country class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class CountryMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private CountryMetadata()
            {
            }

            public string AccountingRegion { get; set; }

            public string ChineseName { get; set; }

            public string CountryCode { get; set; }

            public string CountryName { get; set; }

            public string Currency { get; set; }

            public string DefaultLanguage { get; set; }

            public string DialingCodes { get; set; }

            public Nullable<bool> IsActive { get; set; }

            public string ISOLocaleCode { get; set; }

            public string Region { get; set; }

            public EntityCollection<State> States { get; set; }

            public EntityCollection<User> Users { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies CurrencyMetadata as the class
    // that carries additional metadata for the Currency class.
    [MetadataTypeAttribute(typeof(Currency.CurrencyMetadata))]
    public partial class Currency
    {

        // This class allows you to attach custom attributes to properties
        // of the Currency class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class CurrencyMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private CurrencyMetadata()
            {
            }

            public string ChineseName { get; set; }

            public string Code { get; set; }

            public string EnglishName { get; set; }

            public EntityCollection<FXProduct> FXProductBuy { get; set; }

            public EntityCollection<FXProduct> FXProductSell { get; set; }

            public string Symbol { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies FXCatagoryMetadata as the class
    // that carries additional metadata for the FXCatagory class.
    [MetadataTypeAttribute(typeof(FXCatagory.FXCatagoryMetadata))]
    public partial class FXCatagory
    {

        // This class allows you to attach custom attributes to properties
        // of the FXCatagory class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class FXCatagoryMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private FXCatagoryMetadata()
            {
            }

            public string CatagoryDescription { get; set; }

            public string CatagoryName { get; set; }

            public EntityCollection<FXProduct> FXProducts { get; set; }

            public int ID { get; set; }

            public bool IsValid { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies FXProductMetadata as the class
    // that carries additional metadata for the FXProduct class.
    [MetadataTypeAttribute(typeof(FXProduct.FXProductMetadata))]
    public partial class FXProduct
    {

        // This class allows you to attach custom attributes to properties
        // of the FXProduct class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class FXProductMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private FXProductMetadata()
            {
            }

            public Currency BuyCurrency { get; set; }

            public string BuyCurrencyCode { get; set; }

            public FXCatagory FXCatagory { get; set; }

            public int FXCatagoryID { get; set; }

            public string FXProductCode { get; set; }

            public string FXProductName { get; set; }

            public Currency SellCurrency { get; set; }

            public string SellCurrencyCode { get; set; }

            public EntityCollection<UserFXProductSetting> UserFXProductSettings { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies StateMetadata as the class
    // that carries additional metadata for the State class.
    [MetadataTypeAttribute(typeof(State.StateMetadata))]
    public partial class State
    {

        // This class allows you to attach custom attributes to properties
        // of the State class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class StateMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private StateMetadata()
            {
            }

            public EntityCollection<City> Cities { get; set; }

            public Country Country { get; set; }

            public string CountryCode { get; set; }

            public int Id { get; set; }

            public DateTime InsertDate { get; set; }

            public string StateCode { get; set; }

            public string StateLocalName { get; set; }

            public string StateName { get; set; }

            public int StateType { get; set; }

            public DateTime UpdateDate { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies UserMetadata as the class
    // that carries additional metadata for the User class.
    [MetadataTypeAttribute(typeof(User.UserMetadata))]
    public partial class User
    {

        // This class allows you to attach custom attributes to properties
        // of the User class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class UserMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private UserMetadata()
            {
            }
            [Include]
            public City City { get; set; }

            public Nullable<int> CityID { get; set; }
            [Include]
            public Country Country { get; set; }

            public string CountryCode { get; set; }

            public DateTime CreateDate { get; set; }

            public string Email { get; set; }

            public int ID { get; set; }

            public Nullable<bool> IsActive { get; set; }

            public Nullable<bool> IsDeleted { get; set; }

            public string Password { get; set; }

            public string PhoneNumber { get; set; }

            public DateTime UpdateDate { get; set; }
            [Include]
            public EntityCollection<UserFXProductSetting> UserFXProductSettings { get; set; }

            public string UserName { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies UserFXProductSettingMetadata as the class
    // that carries additional metadata for the UserFXProductSetting class.
    [MetadataTypeAttribute(typeof(UserFXProductSetting.UserFXProductSettingMetadata))]
    public partial class UserFXProductSetting
    {

        // This class allows you to attach custom attributes to properties
        // of the UserFXProductSetting class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class UserFXProductSettingMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private UserFXProductSettingMetadata()
            {
            }

            public FXProduct FXProduct { get; set; }

            public string FXProductCode { get; set; }

            public int ID { get; set; }

            public User User { get; set; }

            public int UserID { get; set; }
        }
    }
}
